package base

import "fmt"

// Weather 定义类型
type Weather int

// 定义枚举
const (
	Normal Weather = iota
	LightRain
	HeavyRain
	RainStorm
	Snow
)

// ShowPrice 针对枚举类型增加方法
func (w Weather) ShowPrice() {
	defaultPrice := 10
	if w == Normal {
		fmt.Println("正常天气，雨伞价格:", defaultPrice)
	} else if w == LightRain {
		fmt.Println("小雨，雨伞价格:", defaultPrice+5)
	} else if w == HeavyRain {
		fmt.Println("大雨，雨伞价格:", defaultPrice+10)
	} else if w == RainStorm {
		fmt.Println("暴雨，雨伞价格:", defaultPrice+10)
	} else {
		fmt.Println("未知天气！")
	}
}

func (w Weather) ShowPriceWithSwitch() {
	defaultPrice := 10
	switch w {
	case Normal, Snow:
		fmt.Println("正常天气，雨伞价格:", defaultPrice)
	case LightRain:
		fmt.Println("小雨，雨伞价格:", defaultPrice+5)
		fallthrough
	case HeavyRain:
		fmt.Println("大雨，雨伞价格:", defaultPrice+10)
	case RainStorm:
		fmt.Println("暴雨，雨伞价格:", defaultPrice+10)
		//使用 fallthrough 会强制执行后面的 case 语句，fallthrough 不会判断下一条 case 的表达式结果是否为 true。
		//fallthrough
	default:
		fmt.Println("未知天气！")
	}
}
